Fork me on GitHub
杨小慧的博客

《剑指offer》JavaScript版——(5)用两个栈实现队列

题目:用两个栈来实现一个队列,完成队列的PushPop操作。 队列中的元素为int类型。

基础知识点:

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。

思路:
入队:将元素进栈1;
出队:判断栈2是否为空,如果为空,则将栈1中所有元素pop,并push进栈2,栈2出栈; 如果不为空,栈2直接出栈。

1
2
3
4
5
6
7
8
9
10
11
12
13
var stack1 = [];
var stack2 = [];
function push(node){
stack1.push(node);
}
function pop(){
if(stack2.length == 0){
while(stack1.length > 0){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
------本文结束感谢阅读------